package com.itcast.dao;

import com.itcast.health.pojo.Role;
import com.itcast.health.pojo.User;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * 用户信息维护持久层
 * @author LiHaoPeng
 * @date 2019-12-03 14:52
 */
public interface UserDataMapper {


    /**
     * 根据用户姓名查询个数
     * @param username
     * @return
     */
    Integer findCountByUserName(@Param("username") String username);

    /**
     * 添加用户信息
     * @param user
     */
    void add(User user);

    /**
     * 根据用户Id查询是否关联角色
     * @param userId
     * @return
     */
    Integer findUserAndRolerRelationByUserId(@Param("userId") Integer userId);

    /**
     * 根据用户Id删除角色关联
     * @param userId
     */
    void deleteUserAndRolerRelationByUserId(@Param("userId") Integer userId);



    /**
     * 分页查询
     * @param queryString
     * @return
     */
    List<User> findPage(@Param("queryString") String queryString);

    /**
     * 编辑用户信息
     * @param user
     */
    void edit(User user);


    /**
     * 查询所有角色
     * @return
     */
    Set<Role> findRoles();

    /**
     * 建立用户与角色关系
     * @param map
     */
    void setUserAndRoleRelationMap(@Param("map") Map map);

    /**
     * 删除用户信息
     * @param id
     */
    void delete(@Param("id") Integer id);

    /**
     * 根据Id查询用户信息
     * @param id
     * @return
     */
    User findById(@Param("id") Integer id);

    /**
     * 根据用户Id查询对应角色
     * @param id
     * @return
     */
    Role findRoleByUserId(@Param("id") Integer id);

}
